package com.aiapphub.BaseCode.controller;
 
import com.aiapphub.BaseCode.common.ResponseResult;
import com.aiapphub.BaseCode.runner.SSOUserFullDataSync;
import com.aiapphub.BaseCode.vo.PageVo;
import com.aiapphub.BaseCode.vo.UserPageInfoVo;
import org.springframework.beans.factory.annotation.Autowired;
import com.aiapphub.BaseCode.service.SsoUserService;
import org.springframework.web.bind.annotation.*;
import lombok.extern.slf4j.Slf4j;

import java.util.List;

/**
 * 用户信息表(SsoUser)表控制层
 *
 * @author makejava
 * @since 2024-10-10 10:57:20
 */
@RestController
@Slf4j
@CrossOrigin
@RequestMapping("/ssoUsers")
public class SsoUserController {
    /**
     * 服务对象
     */
    @Autowired
    private SsoUserService ssoUserService;


    @Autowired
    private SSOUserFullDataSync ssoUserFullDataSync;

    /**
     * 手动触发SSO用户数据全量同步
     * @return 操作结果
     */
    @GetMapping("/syncFullUser")
    public ResponseResult syncSSOFullUser() {
        try {
            // 调用SSOUserDataSync的全量同步方法
            ssoUserFullDataSync.userDataSync();
            return ResponseResult.okResult(200, "统一用户全量同步完成");
        } catch (Exception e) {
            return ResponseResult.errorResult(500, e.getMessage());
        }
    }

    @GetMapping("/getInfo")
    public ResponseResult userInfo(@RequestParam("token") String token){

        return ssoUserService.getUserInfo(token);
    }

    @GetMapping("/getAllUsers")
    public ResponseResult getAllUsers() {
        try {
            // 假设 UserService 已经注入，且该方法获取所有用户
            List<UserPageInfoVo> userList = ssoUserService.getAllUsers();

            // 返回成功的 ResponseResult, 假设 ResponseResult 提供了一个静态方法 success() 来封装结
            return ResponseResult.okResult(userList);
        } catch (Exception e) {
            // 异常处理，返回失败的 ResponseResult，假设提供了一个 error() 方法
            return ResponseResult.errorResult(500, e.getMessage());
        }
    }


    @GetMapping("/getPageUsers/{pageNum}/{pageSize}")
    public ResponseResult getPageUsers(@PathVariable Integer pageNum, @PathVariable Integer pageSize) {
        // 参数校验：页码和每页大小必须大于0
        if (pageNum < 1 || pageSize < 1) {
            return ResponseResult.errorResult(400, "页码和每页大小必须大于0");
        }
        try {
            // 调用服务层方法获取分页数据
            PageVo pageVo = ssoUserService.selectUserPage(pageNum, pageSize);
            System.out.println("userPageVo:"+pageVo);
            // 返回成功的响应结果，封装分页数据
            return ResponseResult.okResult(pageVo);
        } catch (Exception e) {
            // 异常处理，返回失败的响应结果
            return ResponseResult.errorResult(500, "服务器内部错误：" + e.getMessage());
        }
    }
}
